package com.shrct.businessprocess.purchase;

import com.shrct.businessprocess.budget.RCHasCostBudget;
import com.shrct.businessprocess.project.RCExchangeRate;
import com.shrct.businessprocess.project.RCProjectMoney;
import com.shrct.businessprocess.purchase.RCBasePurchaseRequest;
import com.shrct.businessprocess.purchase.RCPayRequest;
import com.shrct.businessprocess.purchase.RCProductPurchaseRequest;
import com.shrct.businessprocess.purchase.impl.RCHasPurchaseBudgetImpl;
import com.shrct.businessprocess.purchase.proxy.RCHasPurchaseBudgetProxy;
import edu.fudan.mylang.pf.EntityImplementation;
import java.util.Collection;

@EntityImplementation(implementBy = RCHasPurchaseBudgetImpl.class)
public interface RCHasPurchaseBudget extends RCHasCostBudget {
  public abstract RCExchangeRate getDefaultPurchaseExchangeRate();
  
  public abstract void purchaseRequestAuditPassed(final RCProductPurchaseRequest purchaseRequest);
  
  public abstract Collection<RCBasePurchaseRequest> getPurchaseRequests();
  
  public abstract RCHasPurchaseBudget removeFromPurchaseRequests(final RCBasePurchaseRequest rCBasePurchaseRequest);
  
  public abstract RCHasPurchaseBudget removeAllPurchaseRequests();
  
  /**
   * 计算订单总金额
   */
  public abstract RCProjectMoney getTotalOrderAmount();
  
  public abstract Collection<? extends RCPayRequest> getAllPayRequests();
  
  public abstract RCHasPurchaseBudgetProxy toProxy();
}
